{"action":"created","issue":{"url":"https://api.github.com/repos/BOINC/boinc/issues/1615","labels_url":"https://api.github.com/repos/BOINC/boinc/issues/1615/labels{/name}","comments_url":"https://api.github.com/repos/BOINC/boinc/issues/1615/comments","events_url":"https://api.github.com/repos/BOINC/boinc/issues/1615/events","html_url":"https://github.com/BOINC/boinc/issues/1615","id":56227127,"number":1615,"title":"Work Fetch - Leaves part of a GPU unused, when it should instead fetch work","user":{"login":"romw","id":985772,"avatar_url":"https://avatars.githubusercontent.com/u/985772?v=3","gravatar_id":"","url":"https://api.github.com/users/romw","html_url":"https://github.com/romw","followers_url":"https://api.github.com/users/romw/followers","following_url":"https://api.github.com/users/romw/following{/other_user}","gists_url":"https://api.github.com/users/romw/gists{/gist_id}","starred_url":"https://api.github.com/users/romw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/romw/subscriptions","organizations_url":"https://api.github.com/users/romw/orgs","repos_url":"https://api.github.com/users/romw/repos","events_url":"https://api.github.com/users/romw/events{/privacy}","received_events_url":"https://api.github.com/users/romw/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"davidpanderson","id":985729,"avatar_url":"https://avatars.githubusercontent.com/u/985729?v=3","gravatar_id":"","url":"https://api.github.com/users/davidpanderson","html_url":"https://github.com/davidpanderson","followers_url":"https://api.github.com/users/davidpanderson/followers","following_url":"https://api.github.com/users/davidpanderson/following{/other_user}","gists_url":"https://api.github.com/users/davidpanderson/gists{/gist_id}","starred_url":"https://api.github.com/users/davidpanderson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidpanderson/subscriptions","organizations_url":"https://api.github.com/users/davidpanderson/orgs","repos_url":"https://api.github.com/users/davidpanderson/repos","events_url":"https://api.github.com/users/davidpanderson/events{/privacy}","received_events_url":"https://api.github.com/users/davidpanderson/received_events","type":"User","site_admin":false},"milestone":null,"comments":1,"created_at":"2015-02-02T11:51:43Z","updated_at":"2015-02-03T07:07:56Z","closed_at":null,"body":"**Reported by JacobKlein on 25 Mar 43272124 22:13 UTC**\nIf a project's GPU apps are setup to use only part of the GPU (ie: app_config.xml), then when the last remaining task(s) for that project are running and not utilizing the full GPU, work fetch should fetch more, but doesn't.\r\n\r\nThis issue was confirmed with both 7.0.60, as well as on 4/8/2013 in the  simulator (which has several unreleased work fetch changes).\r\n\r\nIt would seem that the prerequisites to reproducing the bug are:\r\n\r\n * use an app_config.xml file (to set an app to use part of a GPU, so multiple tasks could run at the same time on the same device).\r\n * use a small buffer setting\r\n\r\nI'm not certain if GPU Exclusions are necessary to create the issue, but I believe that using GPU Exclusions makes this problem worse.\r\n\r\nAs a workaround, I had to increase my buffer settings way above what I would normally expect. It feels like, in addition to work fetch not realizing a portion of the GPU is idle, it might also not be realizing that the tasks run 2-at-a-time.\r\n\r\nDetails, including examples in a simulation, are in the email below:\r\n\r\n----\r\nFrom: jacob_w_klein@msn.com[davea@ssl.berkeley.edu[[BR]([BR]]To:)]Subject: RE: job scheduling[Mon, 8 Apr 2013 09:51:16 -0400[[BR]([BR]]Date:)][  Thank you. I really appreciate you looking at these issues, and I'll try to verify they work.[[BR]([BR]])]Your WCG project sounds interesting; maybe they're going to support Android?[wish we had a Windows Phone platform, I'd love to test on it.[[BR]([BR]]I)][you remember Ed (Beyond) reporting a GPU Exclusion Work Fetch issue?[[BR]([BR]]Do)]I might have found examples of what he was trying to explain...[noticing an issue, both on my computer (7.0.60's work fetch algorithm), as well as the simulator (new work fetch algorithm).[[BR]([BR]][[BR]]I'm)]If a GPU is only partially-loaded (ie: 0.5 GPU) by the last remaining task(s) for a project that has GPU-Exclusions,[get into a scenario where GPUs are left part-idle, and work fetch won't fetch more.[[BR]([BR]]We)][task scheduler (correctly) schedules the workload, which is scheduled in a way where a GPU is left part-idle,[[BR]([BR]]The)]But work fetch thinks we have plenty of work, and sees no fully idle instances, so it doesn't ask for any.[are some examples where that occurred, even with our work fetch changes:[[BR]([BR]][[BR]]Here)][[[BR]([BR]]http://boinc.berkeley.edu/dev/sim_web.php?action=show_simulation&scen=86&sim=26)]2 days 17:03:00[days 14:33:00[[BR]([BR]]3)]6 days 06:13:00[days 16:43:00[[BR]([BR]]8)]9 days 16:07:00[fix might involve evaluating the project's GPU apps to see if it has any that use partial GPU[[BR]([BR]][[BR]]The)]...  or maybe checking to see that all of its GPU apps use <= amount of  currently idle GPU (to ensure we don't keep asking/getting work we  cannot immediately use)[sounds to me like the fix for this one might be tricky instead of straight-forward, though I'm not sure.[[BR]([BR]][[BR]]It)]Do you plan on tackling this soon (fixed in short term), or should I create a ticket (fixed eventually, maybe months/years)?[[BR]][[BR]]Regards,[[BR]]Jacob\n\nMigrated-From: http://boinc.berkeley.edu/trac/ticket/1239"},"comment":{"url":"https://api.github.com/repos/BOINC/boinc/issues/comments/72604626","html_url":"https://github.com/BOINC/boinc/issues/1615#issuecomment-72604626","issue_url":"https://api.github.com/repos/BOINC/boinc/issues/1615","id":72604626,"user":{"login":"romw","id":985772,"avatar_url":"https://avatars.githubusercontent.com/u/985772?v=3","gravatar_id":"","url":"https://api.github.com/users/romw","html_url":"https://github.com/romw","followers_url":"https://api.github.com/users/romw/followers","following_url":"https://api.github.com/users/romw/following{/other_user}","gists_url":"https://api.github.com/users/romw/gists{/gist_id}","starred_url":"https://api.github.com/users/romw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/romw/subscriptions","organizations_url":"https://api.github.com/users/romw/orgs","repos_url":"https://api.github.com/users/romw/repos","events_url":"https://api.github.com/users/romw/events{/privacy}","received_events_url":"https://api.github.com/users/romw/received_events","type":"User","site_admin":false},"created_at":"2015-02-03T07:07:56Z","updated_at":"2015-02-03T07:07:56Z","body":"**Commented by JacobKlein on 18 Jan 43272214 15:09 UTC**\nAnother example where this happened in the simulator, which is in fact much simpler, can be found here:[[BR]]http://boinc.berkeley.edu/dev/sim_web.php?action=show_scenario&name=94\r\n\r\nAt the beginning, we should have fetched more work from GPUGrid.net, but we don't, and erroneously leave half the GPU idle."}}