HPC - High Performance Computing - Tính toán song song trong Ipython Notebook trên windows


#1

Chào các bác, Bác nào có thể post hướng dẫn chi tiết và một đoạn code đơn giản (kiểu như gọi một function tính bình phương một số, để tính bình phương cho 1 list) mà chạy song song nhiều CPU, nhiều thread trong nền windows không ạ? Em đã dùng nhiều trên ubuntu, nhưng quay sang làm trên windows, thì nó rất là không ổn. Môi trường: anaconda jupyter notebook, win10, ngôn ngữ Python 3 Thanks


#2

Không ổn ở đây cụ thể bị gì vậy bạn ?


#3

@Tuan_Anh_Smart-Thing

Mình có thể chạy multiprocessing trong Jupyter trên Windows 10 bằng cách này:

  • Bỏ function bạn muốn sử dụng sang một module khác. Ví dụ: util.py
def binh_phuong(x):
    return x ** 2
  • Trong Jupyter notebook:
import multiprocessing as mp
import util


a = [1, 2, 3, 4, 5]
pool = mp.Pool(mp.cpu_count())
r = pool.map(util.binh_phuong, a)
print(r)

#4

There is a library, named joblib. That will help you


#5

Chào bạn,

Cho mình hỏi là cài bộ anaconda rồi, thì sao kích hoạt để chạy được Ipython nhì? Mình cũng dùng windows.

Cám ơn bạn @Tuan_Anh_Smart-Thing


#6

Anh vào menu của anaconda navigator để mở nó lên anh. Thường dùng jupyter notebook


#7

Tks bạn @Thanh_Ho_Quang nhiều,

Cho mình hỏi chút là khi lập trình python thông thường và song song cho python thì code có khác nhau ko? Bạn có thể cho mình 1 ví dụ về sự khác biệt giữa lập trình python thông thường và Ipython ko? khác biệt về code, khác biệt về hiệu suất tính toán…

Bạn có tài liệu hay ebook về phần này ko? Có thể cho mình xin được ko?

Cảm ơn bạn rất nhiều!!!


#8

Em cũng mới dùng chỉ khoảng 1 thời gian ngắn, nên em chưa thấy được nhiều lắm. Về jupyter notebook thì anh sẽ được 1 giao diện thân thiện hơn, documents sẽ được để thẳng vào file, dễ nhìn, dễ debug hơn Còn về tài liệu thì em hk có, tại em vừa dùng vừa mò, nguồn của em thì thường là youtube


#9

Cám ơn bạn @Thanh_Ho_Quang đã chia sẻ,

Ví dụ khi chạy 1 bài nhân 2 matrix cỡ lớn, thì hiệu suất giữa chạy python tuần tự và song song thì thế nào nhỉ?

Mình cũng chưa tìm đc tài liệu cho Ipython:(


#10

Không hiểu sao, khi mình chạy song song, mà có gọi 1 chương trình khác, kiểu như os.system(“ffmpeg xxx.wav yyy.mp3”) cho N file wav, thì nó chưa bao giờ chạy hết N file cả, toàn dừng giữa chừng, và not response


#11

Em cũng mới vừa google tìm thử về so sánh giữa iPhone… à nhầm iPython và Python thì có một số cái như sau:

  1. Có 1 post hỏi tương tự về vấn đề tương tự trên stackoverflow: What is the difference between Python and IPython? trong đó thì khác biệt cơ bản giữa iPython và Python ngoài hiệu năng còn là cái GUI của iPython

  2. Về vấn đề tốc độ chay của iPython, thì trên reddit có 1 thread hỏi về nó: Script runs faster in IPython than in Python console thì có 1 ông đưa ra giả thiết về MKL (Intel™ Math Kernel Library) trên Anaconda giúp tăng tốc các thư viện: NumPy, NumExpr, SciPy, Scikit-Learn. Em gửi anh đường link đến doc của MKL: https://docs.continuum.io/mkl-optimizations/

  3. Về vấn đề tính toán ma trận, thì như đã có ở trên thì theo em tùy vào kiến trúc của hệ thống phiên dịch và biên dịch của cả 2…


#12

Cám ơn bạn @Thanh_Ho_Quang đã chia sẻ thông tin, mình đang xem hiệu suất khi đang cùng 1 thuật toán chạy bằng python và ipython.

Tài liệu tìm hiểu về ipython bạn hay xem trên youtube à?


#13

Về tài liệu trên youtube em thấy nếu anh kiếm trên 1 từ khóa thì có thể tìm được 1 vài cái khá tốt. Ví dụ như cái anh đang thắc mắc về parallel trên iPython, em thấy có vài videos sau:

  1. IPython & Jupyter in depth: high productivity interactive and parallel python - PyCon 2015
  2. IPython and Jupyter in Depth: High productivity, interactive Python - PyCon 2017
  3. Efficient Python for High Performance Parallel Computing | SciPy 2015 Tutorial | Mike McKerns

Và còn nhiều nguồn khác nữa. Với video về học thuật thì khá kén người xem, khoảng trên 5000 views thì em thấy nó khá tốt. Có vài trường hợp như 3 brown 1 blue, Siraj Raval là mấy trường hợp đặc biệt