2008-12-11 46 views
5

Tôi muốn tham gia lập trình đa lõi (không phải ngôn ngữ cụ thể) và tự hỏi phần cứng nào có thể được đề xuất để khám phá trường này. Mục đích của tôi là nâng cấp máy tính để bàn hiện có của tôi.Lập trình đa lõi

Trả lời

1

Tôi muốn giới thiệu ít nhất một bộ xử lý lõi tứ.

1

Bạn có thể thử sửa đổi với CUDA. Hoàn toàn miễn phí, không phải rằng khó sử dụng và sẽ chạy trên bất kỳ thẻ NVIDIA nào gần đây.

Hoặc, bạn có thể tải PlayStation 3 và Linux SDK và tìm hiểu cách lập trình bộ xử lý Cell. Lưu ý rằng tùy chọn rẻ nhất tiếp theo cho phát triển Cell BE là một thứ tự cường độ đắt hơn PS3. Cuối cùng, bất kỳ bo mạch chủ hiện đại nào sẽ sử dụng chip Core Quad hoặc quad-core Opteron (có thể tốt hơn Asus hoặc một số nhà sản xuất có uy tín khác) sẽ cho phép bạn thử nghiệm với một hệ thống PC đa lõi với tổng số tiền hợp lý .

0

Tôi đồng ý với những người khác mà tôi sẽ nâng cấp lên bộ xử lý lõi tứ. Tôi cũng là một fan hâm mộ lớn của bo mạch chủ ASUS (P5Q Pro là tuyệt vời cho các bộ vi xử lý Core2Quad và Core2Duo)!

Bản vẽ cho lập trình đa lõi là bạn có nhiều tài nguyên hơn để hoàn thành công việc nhanh hơn. Nếu bạn nghiêm túc về lập trình đa lõi, thì tôi hoàn toàn sẽ có được một bộ xử lý lõi tứ. Tôi không tin rằng bạn sẽ nhận được kiến ​​trúc i7 mới từ Intel để tận dụng lợi thế của xử lý đa lõi vì mọi thứ được viết để tận dụng lợi thế của Core2Duo hoặc Core2Quad sẽ chỉ chạy tốt hơn trên kiến ​​trúc mới hơn.

Nếu bạn định sử dụng chương trình đa lõi, tôi sẽ có bộ vi xử lý Core2Duo tốt. Hãy nhớ rằng, nó không chỉ có bao nhiêu lõi bạn có, nhưng cũng như thế nào NHANH là lõi để xử lý các công việc. Core2Duo của tôi chạy ở 4GHz thường xuyên hoàn thành công việc nhanh hơn Core2Quad của tôi chạy ở 2.4GHz ngay cả với một chương trình đa lõi.

Hãy cho tôi biết nếu điều này có ích! JFV

4

Quad-core, vì nó sẽ cho phép bạn thực hiện các vấn đề trong đó số lượng các quá trình đồng thời> 2, thường không tầm thường hóa các sự cố.

Tôi cũng có thể, đối với tuyệt đối geek squeezer, nhận thẻ NVidia đẹp và sử dụng API CUDA. Nếu bạn có Bucks, có một máy trạm CUDA độc lập cắm vào máy tính chính của bạn thông qua cáp và khe cắm mở rộng.

1

Điều khó khăn với lập trình đa luồng/lõi là nó sẽ mở ra một toàn bộ các sâu mới. Các lỗi bạn sẽ phải đối mặt với thường không phải là một trong những bạn đang sử dụng để. Điều kiện cuộc đua có thể vẫn không hoạt động ở độ tuổi cho đến khi chúng cắn và trình biên dịch ngôn ngữ chính thống của bạn sẽ không hỗ trợ bạn theo bất kỳ cách nào. Bạn sẽ nhận được dữ liệu ngẫu nhiên và/hoặc sự cố chỉ xảy ra một lần một ngày/tuần/tháng/năm, thường là trong những điều kiện bí ẩn nhất ...

Một điều vẫn đúng may mắn: sự đồng thời cao hơn được trưng bày bởi máy tính , các điều kiện chủng tộc khác bạn sẽ tiết lộ.

Vì vậy, nếu bạn nghiêm túc về việc lập trình đa luồng/lõi, hãy truy cập càng nhiều CPU lõi càng tốt. Hãy nhớ rằng không phải siêu phân luồng hay SMT cho phép mức độ đồng thời mà nhiều lõi cung cấp.

6

Nếu có thể, tôi khuyên bạn nên mua máy hai chân, tốt nhất là dùng chip lõi tứ. Bạn chắc chắn có thể nhận được một máy tính một ổ cắm, nhưng ổ cắm kép sẽ cho phép bạn bắt đầu thấy một số hiệu ứng của bộ nhớ NUMA sẽ trở nên trầm trọng hơn khi số lõi tăng lên và cao hơn.

Tại sao bạn quan tâm? Có hai vấn đề lớn phải đối mặt với các nhà phát triển đa lõi ngay bây giờ:

  1. Các mô hình lập trình lập trình song song là khó khăn, và có (hiện tại) không nhận được khoảng này. Một hệ thống quad-core sẽ cho phép bạn bắt đầu chơi xung quanh với đồng thời thực tế và tất cả các mô hình phổ biến (chủ đề, UPC, MPI, OpenMP, vv).

  2. Bộ nhớ Bất cứ khi nào bạn bắt đầu có nhiều chuỗi, sẽ có tranh chấp về tài nguyên và tường bộ nhớ ngày càng lớn. A recent article at arstechnica phác thảo một số nghiên cứu (sơ bộ) tại Sandia cho thấy mức độ xấu có thể trở thành hiện tại nếu xu hướng hiện tại tiếp tục. Máy đa lõi sẽ phải giữ tất cả mọi thứ được cho ăn, và điều này sẽ yêu cầu mọi người phải quen thuộc với hệ thống bộ nhớ của họ. Dual-socket thêm NUMA vào hỗn hợp (ít nhất là trên các máy AMD), điều này sẽ giúp bạn bắt đầu con đường khó khăn này.

Nếu bạn muốn biết thêm thông tin về hiệu suất không nhất quán với máy đa ổ cắm, bạn cũng có thể xem this technical report về chủ đề.

Ngoài ra, những người khác đã gợi ý nên có một hệ thống có GPU có khả năng CUDA, mà tôi nghĩ cũng là một cách tuyệt vời để tham gia vào chương trình đa luồng. Đó là cấp độ thấp hơn so với những gì tôi đã đề cập ở trên, nhưng ném một trong những người trên máy tính của bạn nếu bạn có thể. Các trình biên dịch nhóm Portland mới có provisional support for optimizing loops with CUDA, vì vậy bạn có thể chơi xung quanh với GPU của mình ngay cả khi bạn không muốn tự học CUDA.

2

Tùy thuộc vào những gì bạn muốn làm.

Nếu bạn muốn tìm hiểu kiến ​​thức cơ bản về lập trình đa luồng, bạn có thể thực hiện điều đó trên máy tính một lõi hiện có của mình. (Nếu bạn có 2 luồng, hệ điều hành sẽ chuyển đổi giữa chúng trên một máy tính lõi đơn. Sau đó, khi bạn chuyển sang một máy tính lõi kép, chúng sẽ tự động chạy song song trên các lõi riêng biệt, để tăng tốc 2x). Điều này có lợi thế là được tự do! Những bất lợi là bạn sẽ không thấy một sự tăng tốc (trên thực tế, việc triển khai song song có thể hơi chậm do chi phí đầu vào), và mã lỗi đó có khả năng làm việc cao hơn một chút.

Tuy nhiên, mặc dù bạn có thể học lập trình đa luồng trên một lõi đơn, một CPU lõi kép (hoặc thậm chí HyperThreading) sẽ là một trợ giúp tuyệt vời.

Nếu bạn muốn thực sự căng thẳng kiểm tra mã bạn đang viết, thì "tuxedo xanh" nói, bạn nên dùng nhiều lõi như bạn có thể dễ dàng, và nếu có thể có siêu phân luồng quá.

Nếu bạn muốn tìm hiểu về thuật toán để chạy trên cạc đồ họa - đó là một khu vực rất khác với đa lõi x86 - sau đó nhận CUDA và mua một card đồ họa nVidia bình thường hỗ trợ nó.

1

Tôi đồng ý rằng, tùy thuộc vào những gì bạn cuối cùng muốn làm, bạn có thể có thể nhận được bằng chỉ với hệ thống lõi đơn hiện tại của bạn. Lập trình đa lõi về cơ bản là lập trình đa luồng, và bạn chắc chắn có thể làm điều đó trên một chip đơn lõi.

Khi tôi còn là sinh viên, một trong những dự án của chúng tôi là xây dựng một thư viện an toàn cho thư viện malloc C. Thậm chí trên một bộ xử lý lõi đơn, đã đủ để chữa cho tôi mong muốn tham gia chương trình đã đọc. Tôi sẽ thử một cái gì đó nhỏ như thế trước khi bạn bắt đầu suy nghĩ về chi tiêu rất nhiều tiền.

Các vấn đề liên quan