Sự hiểu biết hiện tại của tôi là mọi thứ được thực hiện trong tệp shader đều được thực hiện trên GPU và mọi thứ được thực hiện trong mã (Java, trong trường hợp của tôi) đều được thực hiện trên CPU.
Đây có phải là một mô tả chính xác?
Sự hiểu biết hiện tại của tôi là mọi thứ được thực hiện trong tệp shader đều được thực hiện trên GPU và mọi thứ được thực hiện trong mã (Java, trong trường hợp của tôi) đều được thực hiện trên CPU.
Đây có phải là một mô tả chính xác?
Câu trả lời:
Đó là ý chính của nó.
Về nguyên tắc, nền tảng có thể, có thể hình dung, làm bất cứ điều gì nó muốn. Người ta có thể tưởng tượng một hệ điều hành tiên tiến thực hiện dịch mã biên dịch kịp thời từ x86 sang mã GPU. Tương tự, trình điều khiển OpenGL có thể chạy bất cứ thứ gì nó muốn trên CPU chủ.
Nhưng thực sự, những gì bạn vừa mô tả, là những gì xảy ra.
Nói chung, Có. Java được sử dụng để viết các chương trình chạy trên cpu. Các ngôn ngữ shader (cg, hlsl, et al) được sử dụng để viết các chương trình chạy trên gpu.
Một ngoại lệ cho quy tắc sẽ là sử dụng apis của bên thứ ba có thể thu hẹp khoảng cách.
david van brink đã trả lời câu hỏi của bạn nói chung.
Nhưng như ông nói, trình điều khiển OpenGL có thể chạy mọi thứ trên CPU và nó thực sự xảy ra rất nhiều. Đặc biệt với bối cảnh tương thích, trong đó một số chức năng kế thừa kỳ lạ không thể được thực hiện trên các card đồ họa. Họ yêu cầu mô phỏng phần mềm. Ví dụ, tôi đã nghe trước khi quy định được thực thi trên CPU. Bạn có thể mong đợi cũng bất ngờ với chọn.
Những bất ngờ này có thể xảy ra thậm chí nhiều hơn trên MacOS khi sử dụng bối cảnh 2.1, bởi vì Apple đã thống nhất quan điểm về OpenGL khá tốt trên phạm vi phần cứng của họ và một số phần cứng nhỏ hơn thiếu một số thứ phải được mô phỏng. Nó thực sự có thể thực hiện đầy đủ thông số kỹ thuật ENTIRE OpenGL 2.1 trên CPU, nếu mã tạo ngữ cảnh chỉ định rõ ràng một thiết bị phần mềm.
Ngược lại, mã được thực thi thông qua các thư viện điện toán như vexcl hoặc boost compute hoặc lực đẩy AMP hoặc nVidia của microsoft, CÓ THỂ được thực thi trên GPU hoặc CPU tùy thuộc vào cờ thiết lập API.
Và để hoàn thiện, bên trong CPU bạn cũng có kiến trúc DSP với phần mà chúng ta gọi là SIMD. Trình biên dịch ispc của Intel cung cấp trợ giúp trong việc tạo mã được "đảm bảo" để chạy trên các làn SIMD với nhiều chẩn đoán hiệu suất tại thời điểm biên dịch để giúp bạn tận dụng tối đa mã đó. Thêm OpenMP vào đó và bạn có thể nhận được SIMD đa luồng, tiếp cận các khái niệm về GPU. Nếu bạn có CPU cao cấp và GPU cấp thấp, điều này thực sự có thể hiệu quả hơn.
http://ispc.github.io/