Khám phá Linux - Một nền tảng máy tính khoa học

Linux trong cộng đồng khoa học Sẽ không có gì ngạc nhiên rằng Linux là một sự hiện diện điển hình trong cộng đồng khoa học. Có rất nhiều giải pháp từ các hệ thống điện toán hiệu năng cao đến các phần mềm hiển thị trực quan. Thậm chí còn có một bản phân phối đầy đủ dựa trên Red Hat (bản Linux dành cho doanh nghiệp) tập trung vào khả năng tính toán khoa học, được gọi là Scientific Linux. Bản phân phối Sage và Python của Enthought Bài này xem xét hai cách khác nhau về sử dụng một máy trạm Linux cho quá trình tính toán khoa học. Cách đầu tiên là hệ thống toán học nguồn mở Sage và cách thứ hai là Bản phân phối Python của Enthought (EPD). Cả hai cách đều sử dụng một số công cụ Python nguồn mở cốt lõi để thực hiện những việc phức tạp. Nếu bạn muốn thử chúng, hãy cài đặt các đoạn mã riêng lẻ bằng cách sử dụng hệ điều hành Ubuntu.

pdf10 trang | Chia sẻ: lylyngoc | Lượt xem: 1803 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Khám phá Linux - Một nền tảng máy tính khoa học, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Khám phá Linux - một nền tảng máy tính khoa học Linux trong cộng đồng khoa học Sẽ không có gì ngạc nhiên rằng Linux là một sự hiện diện điển hình trong cộng đồng khoa học. Có rất nhiều giải pháp từ các hệ thống điện toán hiệu năng cao đến các phần mềm hiển thị trực quan. Thậm chí còn có một bản phân phối đầy đủ dựa trên Red Hat (bản Linux dành cho doanh nghiệp) tập trung vào khả năng tính toán khoa học, được gọi là Scientific Linux. Bản phân phối Sage và Python của Enthought Bài này xem xét hai cách khác nhau về sử dụng một máy trạm Linux cho quá trình tính toán khoa học. Cách đầu tiên là hệ thống toán học nguồn mở Sage và cách thứ hai là Bản phân phối Python của Enthought (EPD). Cả hai cách đều sử dụng một số công cụ Python nguồn mở cốt lõi để thực hiện những việc phức tạp. Nếu bạn muốn thử chúng, hãy cài đặt các đoạn mã riêng lẻ bằng cách sử dụng hệ điều hành Ubuntu. Sage có ưu điểm hơn trong hai cách trên ở chỗ nó có nhiều hơn một lớp vỏ qua một số các công cụ bên dưới khác nhau. Thậm chí từ dòng lệnh Sage bạn có thể tương tác với các sản phẩm thương mại như MATLAB hoặc Mathematica. Tại dấu nhắc của Sage, về cơ bản bạn tương tác với IPython bằng việc truy cập vào tất cả các tính năng của nó. Bạn cũng phải suy nghĩ về các đối tượng và các phương pháp khi bạn bắt đầu tìm hiểu những khả năng của Sage. Sage bao gồm một số các hệ thống đại số của máy tính khác nhau và cho phép người dùng tương tác với chúng từ dòng lệnh. Điều quan trọng cần lưu ý rằng Sage dựa trên Python nhưng có phân tích trước cú pháp từng câu lệnh trước khi chuyển nó tới trình thông dịch Python. Điều này có thể gây ra một số nhầm lẫn khi xem xét các lệnh Sage tương tác đơn giản. Lý do cơ bản đối với hành vi này là mong muốn thực hiện gõ các lệnh vào Sage theo nghĩa toán học càng trực quan càng tốt. Một ví dụ hay là ký hiệu lũy thừa. Trong Python thuần túy, bạn phải gõ 2**4 để làm cho lũy thừa hai thành bốn. Trong Sage bạn sử dụng ký hiệu mũi tên lên (^), như là 2^4. Sage cũng xử lý một số hoạt động ví dụ như chia số nguyên khác với Python cơ bản. NumPy và SciPy Hai đoạn mã trò chơi câu đố cơ bản nổi tiếng nhất với cả hai Sage và EDP là NumPy và SciPy. Cả hai dự án đã được dùng từ giữa đến cuối những năm 1990 và ban đầu được khởi động bởi Travis Oliphant, hiện nay là một nhân viên tại Enthought. NumPy cung cấp các phương thức số cốt lõi để thao tác các mảng và các ma trận. SciPy phụ thuộc vào NumPy với cấu trúc dữ liệu mảng cơ bản của nó và chứa một loạt các mô đun dùng cho tất cả mọi thứ từ đại số tuyến tính đến xử lý tín hiệu. Enthought là nhà tài trợ của cả hai dự án và tiếp tục đóng góp rất nhiều vào phiên bản mới. Về đầu trang Cài đặt Sage Có sẵn một số tùy chọn để cài đặt Sage. Để xem xét qua về Sage mà không cần cài đặt, bạn có thể sử dụng một phiên bản trực tiếp từ đĩa CD. Bạn cũng có thể chạy đĩa CD trực tiếp trong một máy ảo như Oracle VM VirtualBox hay VMware Player. Bài này xem xét việc cài đặt Sage trên cả hai máy tính vật lý và máy ảo đang chạy phiên bản Ubuntu (12.04) mới nhất. Máy tính vật lý Cài đặt Sage từ nguồn là phương pháp tin cậy nhất trên Unbuntu 12.04 bởi vì hệ điều hành này chỉ mới được phát hành gần đây. Tải tệp tarball nguồn và giải nén nó vào một thư mục thuận tiện. Bạn cũng cần cài đặt một số thư viện cần thiết trước khi tiến hành build, bạn có thể thực hiện việc này bằng các lệnh sau đây: sudo apt-get install build-essential gfortran sudo apt-get install texlive xpdf evince sudo apt-get install tk8.5-dev Sau khi cài đặt các thư viện cần thiết, bạn đã sẵn sàng build Sage, bạn có thể chạy với lệnh sau đây: make Lúc này, hãy đi xem phim hoặc chợp mắt một lát. Toàn bộ quá trình build có thể mất vài giờ trên một máy tính để bàn thông thường. Bạn sẽ thấy một màn hình như trong Hình 1 nếu tất cả mọi thứ đang được biuld một cách chính xác. Hình 1. Màn hình xây dựng Sage Máy ảo Việc cài đặt trên một máy ảo là một tùy chọn tốt nếu bạn không thích mạo hiểm và chỉ muốn bắt đầu sử dụng Sage. Một gói OVA (Open Virtualization Archive – Tệp lưu trữ ảo hóa mở) hiện có sẵn để tải về trên trang web Sage cùng với các gói tệp nhị phân cho Fedora 16 và Ubuntu 10.04.3. OVA là một gói tệp duy nhất (về thực chất là một tệp tar) có chứa tất cả các tệp cần thiết để khởi chạy máy ảo theo OVF (Open Virtualization Format – Định dạng ảo hóa mở). Về đầu trang Sử dụng Sage Khi bạn đã cài đặt xong Sage, bạn đã sẵn sàng bắt đầu cuộc hành trình khám phá và khai thác toán học. Sage vừa có một dòng lệnh và vừa có một giao diện dựa trên web. Giao diện dòng lệnh Để khởi chạy phiên bản dòng lệnh từ thư mục, nơi bạn đã build Sage, bạn chỉ cần gõ lệnh sau: ./sage Hình 2 cho thấy một ví dụ về trình thông dịch Sage và một số cách diễn giải toán học đã đề cập ở trên. Hình 2. Các cách diễn giải toán học và giao diện dòng lệnh của Sage Sự khác biệt trong phép chia số nguyên liên quan tới cách Python xử lý kiểu phép toán (số nguyên, dấu phẩy động và v.v). Trong Python, biểu thức 2/3 gán một kết quả số nguyên làm tròn xuống đến không. Sage xử lý toán tử chia như là một hàm dựng cho các số hữu tỷ, có nghĩa là bạn có thể thực hiện các phép toán dựa vào các phân số theo nhiều cách tương tự như bạn làm trên giấy. Ví dụ, nếu bạn gõ 2/3 + 2/3 tại dấu nhắc của Sage, bạn sẽ nhận được kết quả là 4/3. Nếu bạn gõ cùng một điều tương tự trong Python, kết quả là 0. Bạn có thể ngầm định bắt dùng kiểu chữ khi sử dụng float() hoặc int() như trong Hình 2. Giao diện dựa trên web Để sử dụng Sage Notebook (Sổ tay Sage), bạn có thể gõ hoặc notebook() sau khi khởi động Sage hoặc sử dụng lệnh sau: ./sage --notebook Lệnh này khởi chạy máy chủ Sage và trình duyệt web mặc định sẽ mở trang chủ Sage Notebook. Bạn sẽ tìm thấy nhiều tính năng trong sổ tay để làm cho việc thao tác công việc của bạn dễ dàng, chẳng hạn như lưu và nạp các tờ bảng tính vào một tệp, cộng với các chức năng sao chép, xóa và đổi tên thông thường. Sage làm cho công việc cộng tác dễ dàng với các chức năng Chia sẻ và Xuất bản trong Hình 3. Hình 3. Các tính năng của Sage Notebook Các gói đại số của máy tính Bản phân phối Sage cơ sở bao gồm một số gói đại số máy tính bao gồm có GAP, Maxima, Pari và Singular. Mỗi gói có những người ủng hộ riêng của mình trong cộng đồng toán học và cung cấp chức năng hơi khác nhau một chút. Điều chủ yếu ở đây là ở chỗ Sage bao gồm mỗi gói này trong một bản phân phối cơ sở, có nghĩa là bạn không phải tải về và cài đặt chúng một cách riêng biệt. Hình 4 cho thấy một ví dụ về sử dụng Maxima để thực hiện một số phép toán ma trận. Điều này đã được thực hiện bằng cách sử dụng Sage Notebook và nó cho thấy mục nhập vào của người sử dụng có màu đen cùng với kết quả màu xanh lam. Hai dòng đầu tiên tạo ra một ma trận với các mục nhập bằng i/j , ở đây phạm vi i và j là từ 1 đến 4. Lưu ý rằng đây là những số hữu tỷ (các phân số). Hình 4. Các phép toán ma trận với Maxima Xuất bản các bài báo khoa học Việc xuất bản các bài báo khoa học là một yêu cầu đối với nhiều người trong cộng đồng giáo dục. Sage đòi hỏi rằng mọi đối tượng đều có một đại diện LaTeX. Điều này được gắn trực tiếp với nhu cầu sản xuất các đồ họa và văn bản có chất lượng-xuất bản bằng cách sử dụng ngôn ngữ TeX. Hãy hiểu rõ rằng bạn cần một bản cài đặt TeX đầy đủ để tận dụng lợi thế của tất cả các tính năng mà Sage cung cấp. Về đầu trang Cài đặt EPD Tính toán khoa học với Python là những gì mà Enthought phải làm với tư cách là một công ty. Các đề xuất và sự hỗ trợ sản phẩm thương mại của Enthought là những thứ phải trả theo các hóa đơn, nhưng chúng vẫn đóng góp cho cộng đồng nguồn mở theo cách tốt đẹp. Những đóng góp của chúng trực tiếp hoạt động tốt trên cơ sở mã NumPy và SciPy cũng như khi trình bày tại hội nghị thường niên PyCon và khi lưu trữ hội nghị SciPy trên máy chủ. Bạn có thể sử dụng trình quản lý phần mềm Ubuntu để cài đặt các đoạn mã khác nhau cần thiết để bắt đầu chạy với IPython, NumPy và SciPy hoặc bạn có thể chỉ tải về và cài đặt phiên bản miễn phí của EPD, được biết đến là EPD Free (EPD miễn phí). Enthought cung cấp cả hai phiên bản 32 - và 64-bit của EPD Free, đã được thử nghiệm trên Red Hat, Ubuntu, openSUSE. Chúng đã cảnh báo rằng một số hệ thống Linux 64-bit không bao gồm các thư viện của 32-bit, vì vậy cần có một phiên bản 64-bit của gói đó. Để cài đặt EPD Free, đầu tiên hãy tải về kịch bản lệnh của trình cài đặt và sau đó chạy nó với lệnh sau đây: bash epd_free-7-2-2-rh5-x86.sh Để làm cho việc khởi chạy EPD trong tương lai dễ dàng hơn, bạn cần phải thêm một vài dòng mã vào tệp khởi động shell của mình (hoặc .cshrc hoặc .bash_profile). Ubuntu sử dụng shell bash là mặc định, vì vậy tôi hiển thị mã dựa vào đó. Với bài viết này tôi sử dụng các dòng sau: export PATH=/home/paul/Downloads/epd_free-7.2-2-rh5-x86_64/bin:$PATH Về đầu trang Sử dụng EPD IPython có điểm chung khác giữa EPD và Sage vì nó là công cụ giao diện người dùng chính. EPD cài đặt cho cả một giao diện dòng lệnh lẫn chức năng sổ tay dựa trên web, giống như Sage. Giao diện dòng lệnh Giao diện điều khiển dựa trên Qt cung cấp một số chức năng nâng cao, bao gồm cả tô mầu toàn bộ cú pháp bằng cách sử dụng thư viện Pygments. Nó cũng cung cấp khả năng để thực hiện các bản vẽ đồ thị trực tuyến. Để có được khả năng này, bạn có thể khởi chạy IPython bằng lệnh sau đây: ipython --pylab Hình 5 cho thấy giao diện điều khiển Qt với một bản vẽ đồ thị nhúng. Hình 5. Tạo một dự án PyDev mới Giao diện dựa trên web Phiên bản mới nhất của IPython (0.12) bao gồm một khả năng sổ tay dựa trên web, tương tự như Sage. Để có được chức năng sổ tay này, bạn cần phải cài đặt các phụ thuộc, bao gồm máy chủ web ZeroMQ và Tornado. Để khởi chạy chức năng sổ tay từ dòng lệnh, hãy gõ lệnh như sau vào một cửa sổ của thiết bị đầu cuối: ipython notebook Lệnh này khởi động công cụ web Tornado và khởi chạy trình duyệt web mặc định mở ra trang bảng điều khiển. Sau đó, nếu bạn chọn chức năng sổ tay mặc định, bạn sẽ thấy một cửa sổ mới như trong Hình 6. Hình 6. Chức năng sổ tay của iPython Một điều khác về chức năng sổ tay web là bạn cần sử dụng Control-Enter khi bạn muốn thực thi mã. Điều này giúp thêm vào khả năng nhập nhiều dòng mã, như trong Hình 6 và có tất cả mọi thứ trong hộp input được thực hiện tuần tự. Do đó, bạn có thể dễ dàng chia nhỏ các chức năng thành các khối có thể quản lý được. Bạn có thể chú thích các chức năng sổ tay của mình bằng cách sử dụng cú pháp Markdown. Nếu bạn chưa quen với Markdown, về bản chất đó là một cách để tạo ra HTML (Hypertext Markup Language – Ngôn ngữ đánh dấu siêu văn bản) đã định dạng bằng cách sử dụng văn bản thuần. Ví dụ, một dấu thăng (#) theo sau là một khoảng trống được sử dụng để chỉ một H1 trong HTML, trong khi hai dấu hiệu thăng được sử dụng cho H2 và v.v. Điều này cho phép bạn thêm chú thích hoặc tài liệu hướng dẫn để bổ sung mã và đồ họa của mình. Pandas Thư viện phân tích dữ liệu Python hay còn gọi là Pandas, là một công cụ khác gắn với SciPy và NumPy được tạo ra đặc biệt để giải quyết các nhiệm vụ phân tích dữ liệu. Pandas kết hợp một số lượng lớn các thư viện cùng với một số mô hình dữ liệu tiêu chuẩn để cung cấp các công cụ cần thiết để thao tác dữ liệu lớn một cách hiệu quả. Các tệp giá trị phân cách bằng dấu phẩy (CSV) đại diện cho một trong những cách phổ biến nhất về phân phối dữ liệu giữa các bên liên quan. Pandas cung cấp chức năng thư viện tối ưu hóa để đọc và ghi nhiều định dạng tệp, bao gồm định dạng CSV và định dạng HDF5 hiệu quả. Các mô đun read_csv biết cách phân tích các tệp CSV điển hình có thông tin đầu trang trong hàng đầu tiên. Nó cũng biết cách xử lý các tệp có các ngày tháng hoặc thời gian bằng cách sử dụng một trình phân tích cú pháp dựng sẵn. Pandas bao gồm một mô đun các công cụ ngày tháng (datetools) có một danh sách dài các thường trình thao tác để thực hiện các loại phép toán ngày tháng khác nhau. Liệt kê 1 cho thấy một đoạn mã của tài liệu hướng dẫn của Pandas cho thấy cách tìm một ngày cách bốn tháng và năm ngày: Liệt kê 1. Ví dụ mẫu về phép chiếu ngày tháng của Pandas d = datetime(2012, 4, 20) d + pandas.DateOffset(months=4, days=5) datetime.datetime(2012, 8, 25, 0, 0) Pandas thực sự tỏa sáng khi nói đến việc phân chia và chia nhỏ các bộ dữ liệu lớn. Sau khi bạn đã nhập khẩu dữ liệu của mình vào một cấu trúc dữ liệu nguyên gốc, bạn có một loạt các công cụ cho bạn tùy ý sử dụng để thực hiện đúng là bất kỳ kiểu thao tác nào. Bạn có thể phân chia dữ liệu bằng cách sử dụng cú pháp phân loại Python tiêu chuẩn, thực hiện các phép toán trên tất cả hoặc một phần của dữ liệu hoặc vẽ đồ thị nó bằng cách sử dụng matplotlib. Nếu bạn cần thực hiện bất cứ nhiệm vụ thao tác dữ liệu nào, bạn chắc chắn muốn tăng tốc bằng Pandas.